package d4_map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo02 {
    public static void main(String[] args) {
        //目标: 掌握Map集合的常见API(重点)(后面项目基本都是用这个)
        Map<String, Double> map = new HashMap<>();
        //public V  添加数据
        Double i = map.put("陈平安", 178.0);
        //System.out.println(i);
        map.put("宁姚", 167.0);
        map.put("叶凡", 178.0);
        map.put("姬紫月", 170.0);
        map.put("秦牧", 179.0);
        map.put("姬紫月", 171.0);
        Double ii = map.put("陈平安", 178.0);
        //System.out.println(ii);
        map.put("萧炎", 178.0);
        //无序是因为哈希值算出的位置, 但是只是会无序一次,执行多次哈希值算出的位置是一样的
        //输出集合
        System.out.println(map);

        //1、public int size() 获取集合的大小----->被覆盖掉的元素不会计入集合元素个数的计算
        System.out.println(map.size());

        //2、清空集合
//        map.clear();
        System.out.println(map);

        //3、判斷集合是否为空
        System.out.println(map.isEmpty());

        //4、根据键获取对应的值(重点)
        System.out.println(map.get("陈平安"));
        System.out.println(map.get("小花朵"));//如果没有这个键,会返回null

        //5、public V remove(Object key) 根据键删除整个元素
        //根据键删除整个数据, 返回删除数据对应的值(重点)
        System.out.println(map.remove("陈平安"));
        System.out.println(map);

        //6、public boolean containsKey(Object key) 判断是否包含某个键
        //判断是否包含了某个键(重点)
        //{叶凡=178.0, 宁姚=167.0, 萧炎=178.0, 姬紫月=171.0, 秦牧=179.0}
        System.out.println(map.containsKey("青木"));//false
        System.out.println(map.containsKey("秦牧"));//true
        System.out.println(map.containsKey(null));//false
        System.out.println(map.containsKey("姬紫月"));//true


        //7、public boolean containsValue(Object value) 判断是否包含某个值
        //判断是否包含某个值
        System.out.println(map.containsValue(171.3));//false
        System.out.println(map.containsValue(178.0));//true
        System.out.println(map.containsValue(171.0));//true
        //8、public Set<K> KeySet() 获取全部的键的集合,返回给一个set集合
        //获取Map集合全部键, 到一个Set集合中返回(Set集合去重):因为键本身就是无序、不重复的
        Set<String> keys = map.keySet();
        for (String key : keys) {
            System.out.print(key + " ");
        }


        //9、public Collection<V> values() 获取Map集合的全部值
        Collection<Double> values = map.values();
        for (Double value : values) {
            System.out.println(value);
        }

    }
}
